/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pintor;
import java.util.ArrayList;
/**
 *
 * @author David
 */
public class Cubos {
    public ArrayList<Puntos> puntos = new ArrayList();
    public ArrayList<Superficie> Superficies = new ArrayList();
    public Puntos puntoMenorDistancia;
    private int r;
    private int g;
    private int b;
    public Puntos getPuntoMenorDistancia() {
        return puntoMenorDistancia;
    }

    public void setPuntoMenorDistancia(Puntos puntoMenorDistancia) {
        this.puntoMenorDistancia = puntoMenorDistancia;
    }



    public void aumentar(int tamaño){


        Puntos p1 = new Puntos(puntos.get(0).getX(), puntos.get(0).getY(), puntos.get(0).getZ());
            Puntos p2 = new Puntos(p1.getX(), p1.getY() + tamaño, p1.getZ());
            Puntos p3 = new Puntos(p2.getX() + tamaño, p2.getY(), p2.getZ());
            Puntos p4 = new Puntos(p1.getX() + tamaño, p1.getY(), p1.getZ());
            Puntos p5 = new Puntos(p4.getX(), p4.getY(), p4.getZ() + tamaño);
            Puntos p6 = new Puntos(p5.getX() - tamaño, p5.getY(), p5.getZ());
            Puntos p7 = new Puntos(p6.getX(), p6.getY() + tamaño, p6.getZ());
            Puntos p8 = new Puntos(p5.getX(), p5.getY() + tamaño, p5.getZ());
             Superficies.clear();
             puntos.clear();
             //Cara inferior
        Superficies.add(new Superficie(p1,p2,p3,p4));

        //Cara Superior
       Superficies.add(new Superficie(p5,p6,p7,p8));

        //Lateral Derecho
       Superficies.add(new Superficie(p1,p2,p7,p6));

        Superficies.add(new Superficie(p4,p3,p8,p5));
        //Atras
        Superficies.add(new Superficie(p1,p4,p5,p6));
        //Detrás
        Superficies.add(new Superficie(p2,p3,p8,p7));

        puntos.add(p1);
        puntos.add(p2);
        puntos.add(p3);
        puntos.add(p4);
        puntos.add(p5);
        puntos.add(p6);
        puntos.add(p7);
        puntos.add(p8);
    }


    public void aumentar(int tamaño, Puntos p){


        Puntos p1 = new Puntos(p.getX(), p.getY(), p.getZ());
            Puntos p2 = new Puntos(p1.getX(), p1.getY() + tamaño, p1.getZ());
            Puntos p3 = new Puntos(p2.getX() + tamaño, p2.getY(), p2.getZ());
            Puntos p4 = new Puntos(p1.getX() + tamaño, p1.getY(), p1.getZ());
            Puntos p5 = new Puntos(p4.getX(), p4.getY(), p4.getZ() + tamaño);
            Puntos p6 = new Puntos(p5.getX() - tamaño, p5.getY(), p5.getZ());
            Puntos p7 = new Puntos(p6.getX(), p6.getY() + tamaño, p6.getZ());
            Puntos p8 = new Puntos(p5.getX(), p5.getY() + tamaño, p5.getZ());
             Superficies.clear();
             puntos.clear();
             //Cara inferior
        Superficies.add(new Superficie(p1,p2,p3,p4));

        //Cara Superior
       Superficies.add(new Superficie(p5,p6,p7,p8));

        //Lateral Derecho
       Superficies.add(new Superficie(p1,p2,p7,p6));

        Superficies.add(new Superficie(p4,p3,p8,p5));
        //Atras
        Superficies.add(new Superficie(p1,p4,p5,p6));
        //Detrás
        Superficies.add(new Superficie(p2,p3,p8,p7));

        puntos.add(p1);
        puntos.add(p2);
        puntos.add(p3);
        puntos.add(p4);
        puntos.add(p5);
        puntos.add(p6);
        puntos.add(p7);
        puntos.add(p8);
    }
    
    public Cubos(){}
    
    public Cubos(Puntos p1, Puntos p2, Puntos p3, Puntos p4,Puntos p5, Puntos p6, Puntos p7, Puntos p8){
        //Cara inferior
        Superficies.add(new Superficie(p1,p2,p3,p4));
        
        //Cara Superior
       Superficies.add(new Superficie(p5,p6,p7,p8));
        
        //Lateral Derecho
       Superficies.add(new Superficie(p1,p2,p7,p6));
        
        Superficies.add(new Superficie(p4,p3,p8,p5));
        //Atras
        Superficies.add(new Superficie(p1,p4,p5,p6));
        //Detrás
        Superficies.add(new Superficie(p2,p3,p8,p7));
        
        puntos.add(p1);
        puntos.add(p2);
        puntos.add(p3);
        puntos.add(p4);
        puntos.add(p5);
        puntos.add(p6);
        puntos.add(p7);
        puntos.add(p8);
        
    }
    
    public void verificarPuntoenCara(Puntos p){
        for (Superficie po:Superficies) {
            po.setPintar(false);
            for (Puntos pun:po.getPuntos()){
                if(p.equals(pun)){
                    po.setPintar(true);
                    break;
                }
            }
            
        }
    }

    public ArrayList<Superficie> getSuperficies() {
        return Superficies;
    }

       
    public ArrayList<Puntos> getPuntos() {
        return puntos;
    }

    public void setPuntos(ArrayList<Puntos> puntos) {
        this.puntos = puntos;
    }

    /**
     * @return the r
     */
    public int getR() {
        return r;
    }

    /**
     * @param r the r to set
     */
    public void setR(int r) {
        this.r = r;
    }

    /**
     * @return the g
     */
    public int getG() {
        return g;
    }

    /**
     * @param g the g to set
     */
    public void setG(int g) {
        this.g = g;
    }

    /**
     * @return the b
     */
    public int getB() {
        return b;
    }

    /**
     * @param b the b to set
     */
    public void setB(int b) {
        this.b = b;
    }
    
    
    
}
